//添加到购物车的核心思路
//点击产品数据的时候获取这条数据，再添加到carts数组里
    //1.点击产品上的按钮，获取到产品id
    //2.查找到这条数据，在当前的action中定义方法接收
    //3.添加到carts数组

export default {
    namespaced: true,
    state:{
        tag:"购物车模块store",
        carts:[]
    },
    mutations:{
        SET_CART(state,payload){
            //获取数据的id
            let id = payload.id
            //用这个id到carts数组中查找有没有这条数据

            //如果有，就让数量+1
            //没有，就创建一条数据添加到carts
            let target = state.carts.find(item=>item.id==id)
            if(!target){
                //没有这条数据
                let obj = {
                    id,
                    title:payload.title,
                    price:payload.price,
                    count:1
                }
                state.carts.push(obj)
            }else{
                target.count++
            }
        }
    },
    actions:{
        GET_PRODUCT(context,payload){
            console.log(payload);   //拿到了数组的数据

            //通过mutation将传入的数据添加到当前的carts状态中
            context.commit("SET_CART",payload)
            //触发product模块中的mutation  要转换成根store
            context.commit("Product/DECREMENT_INVENTORY",payload.id,{root:true})
        }
    },
    getters:{
        total(state){
            return state.carts.reduce((total,item)=>{
                return total += item.count * item.price
            },0)
        }
    },

}